// let msg :string = '小小怪'
// let age :number = 18
// let isSingle : boolean = true
// let isNull : null = null
// let undefinedValue : undefined = undefined

// const arr :number[] = [15,20,45,20]
// // arr.push('1111')   类型“string”的参数不能赋给类型“number”的参数。
//   const res= arr.filter(item => item > 16)
//   console.log(res);

// console.log(`名字第二个字：`,msg.charAt(2),`年龄：`,age,`是否单身：`,isSingle,isNull,undefinedValue);

// //  类型别名  注意要大驼峰命名 首字母大写
// type ItemType = (string | number )

// const arr: ItemType[] = [11, 8, 51,22, 'hello,world!']

// arr.forEach(item=>{
//   if(typeof item ==='string'){
//    console.log('安全调用字符串方法,转大写:',item.toUpperCase())
//   }else if(typeof item === 'number'){
//   console.log('安全调用数字方法',item.toFixed(2));
  
//   }
// })


// // 函数类型 基本使用
//  function  fn (a:number,b:number):number {
//   return (a + b)
//  }
// console.log( fn(10, 50));

// // 函数表达式
// const sum = (a:number ,b:number) :number=>{
//   return  a * b
// }
// console.log(sum(10,20));


// 函数表达式  函数整体注解

// type FunType = (a:number ,b:number) => number

// const add:FunType = (a,b) =>{
//   return a + b
// }

// const sub:FunType = (a,b) =>{
//   return a - b 
// }

// console.log('函数表达式整体注解,加法：',add(10,30));
// console.log('函数表达式整体注解,减法：',sub(10,30));

 

// 函数表达式整体注解

// type FunctionType =(a:number,b:number) => number

// const sum:FunctionType = (a ,b )=>{
//   return a + b
// }

// console.log(sum(5,10));


// 函数的可选参数
// function buildName(firstName:string,lastName?:string){
//   if(lastName){
//     return `${firstName}❤️❤️ ${lastName}`
//   }else{
//     return firstName
//   }
// }
// console.log(buildName('参数1','参数2'));
// console.log(buildName('参数1'));

// function  createName ( first:string,last?:string){
//   if(last){
//     return `${first} 🤣🤣🤣 ${last}` 
//   }else{
//     return first
//   }
// }

// console.log(createName('1','2'));
// console.log(createName('1'));


// 无返回值
// function eachArr (arr: number[]): void{
//   arr.forEach((item)=>{
//     console.log(item);
//   })
// }

// console.log(eachArr([1,2]));

//  //思考题  
// function arr2Str (arr:(number | string)[],str?:string){
//   if(str){
//     return arr.join(str)
//   }else{
//     return arr.join(',')
//   }
//   }

// console.log(arr2Str([1,2,3],'-'));
// console.log(arr2Str(['4','5'],'&'))
// console.log(arr2Str(['4','5']));


// todo interface 接口


// interface Person {
//   name:string,
//   age:number,
//   gender:number,
//   isSingle:boolean,
//   // sayHi?:()=>{}
// }

// const people :Person ={
//   name:'小明',
//   age:20,
//   gender:0,
//   isSingle:true,
  
// }

// console.log(people);


// const peopleArr :Person [] =[
//   {name:'zs',age:8,gender:0,isSingle:true},
//   {name:'ls',age:18,gender:0,isSingle:true},
//   {name:'ww',age:8,gender:1,isSingle:false}
// ]

// console.log(peopleArr);

//  todo 接口的继承  extendns
// interface msg  {
//   time:string,
//   count:number
// }

// interface msgSon extends msg{
//   person:number
// }

// const sum :msgSon = {
//   time:'2019',count:10,person:5
// }
// const total :msgSon []=[
//   {time:'2021',count:99,person:3},
//   {time:'2022',count:99,person:30},
//   {time:'2023',count:10,person:113},
// ]
   
// console.log(sum,total);


// 思考题

interface response {
  code:number,
  msg:string,
  data:Article
}

interface Article  {
  title:string,
  content:string
}

const res:response = {
  code:111,
  msg:'你好',
  data:{
    title:'母猪会上诉',
    content:'才怪'
  }
}

console.log(res);

